#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
const int N = 1010, mod = 1e8 + 7;
LL dp[N][N];
int n, s, a, b;
// 转换为求组合数量的问题
// s % n == [(n - 1)*d1 + ... + d_n-1] % n;
// 此时就可以用背包问题的思路来做了
// 一共n - 1个数
inline int get_mod(int a, int b)
{
    return (a % b + b) % b;
}

int main()
{
    cin >> n >> s >> a >> b;
    dp[0][0] = 1;
    for(int i = 1; i < n; ++i)
        for(int j = 0; j < n; ++j)
            dp[i][j] = (dp[i - 1][get_mod(j - (n - i) * a, n)] + dp[i - 1][get_mod(j + (n - i) * b, n)]) % mod;
    cout << dp[n - 1][get_mod(s, n)] << endl;
    return 0;
}